- Report#3:Javaの文法解説I{〜11/14(Mon)}
- 課題
講義資料を参考にJavaの基礎的な文法について、教科書と対応させながら解説・考察せよ。
- 解答
public /*これもコメントです*/ class report3 { // Test01.java
public static void main(String args[]) { // mainの記述
System.out.println("コメント");
cmnt(); // cmntスレッドの呼び出し
System.out.println("¥n¥n文字列出力");
smp1();
System.out.println("¥n¥n変数宣言と数値出力");
smp2();
System.out.println("¥n¥n繰り返し処理");
smp3();
System.out.println("¥n¥n条件処理");
smp4();
}
public static void cmnt() { // mainの記述
System.out.println("My first Java."); // 文字列出力する
}
public static void smp1() {
System.out.print("AAAAA");
System.out.print("BBBBB¥nCCCCC¥n");
System.out.println("DDDDD");
System.out.println("EEEEE¥nFFFFF¥n¥nGGGGG");
}
public static void smp2() {
int a, b, sum;
a = 100;
b = 200;
sum = a + b;
System.out.print("a="); // 文字列だけ出力
System.out.println(a); // 数値だけ出力
System.out.println("b=" + b); // 文字列と数値を出力
System.out.println("a+b=" + sum); // 結果を出力
System.out.println("a+b=" + (a+b)); // 直接計算させる
}
public static void smp3() {
int i, sum;
for (i=1; i<=5; i++)
System.out.println("i=" + i);
sum = 0;
for (i=1; i<=5; i++) {
sum = sum + i;
System.out.println("sum=" + sum);
}
}
public static void smp4() {
int i;
for (i=1; i<=5; i++) {
System.out.print("i=" + i);
if (i < 3)
System.out.println(" 3未満です");
else
System.out.println(" 3以上です");
}
}
}
- コメント
My first Java.
文字列出力
AAAAABBBBB
CCCCC
DDDDD
EEEEE
FFFFF
GGGGG
変数宣言と数値出力
a=100
b=200
a+b=300
a+b=300
繰り返し処理
i=1
i=2
i=3
i=4
i=5
sum=1
sum=3
sum=6
sum=10
sum=15
条件処理
i=1 3未満です
i=2 3未満です
i=3 3以上です
i=4 3以上です
i=5 3以上です
- 考察
- 文字列出力
print();またはprintln();で出力される。
println();では文字列を出力し、改行する。
どちらも、( )の中の「" "」で囲まれた部分が文字列として出力される。
また、「" "」で囲まれず、その変数がある場合、変数の値が出力される。
- 変数宣言と数値出力
変数を使う場合、使う前に宣言しないといけない。次のように変数の宣言をする。
データ型 変数名;
または
データ型 変数名1 変数名2;
また、+演算子を使うことで、文字列と変数、または文字列同士をつなげて表示することができる。
変数同士の場合は直接変数同士の計算を行ってから出力される。
- 繰り返し処理
繰り返し処理を行いたい場合は、for文や、while文を使う。
例
- for(初期値;ループ条件;各ループの最後に実行すること)
また、ループの実行文が2行以上ある場合、「{ }」で挟む
- 条件処理
条件によって処理を分けたい場合、if文やswitch文を使う。
例
- if(条件){
真の場合の処理};
または
- if(条件){
真の場合の処理};
else{
偽の場合の処理}:
- 変数と定数
public class Test02 { // Test02.java
public static void main(String args[]) {
char ch;
boolean bdt;
int idt;
long ldt;
float fdt;
double ddt;
String ss;
final int CNST1 = 1234; // final定数
ch = 'A'; // 半角文字
System.out.println("文字=" + ch + " code=" + (int)ch);
ch = '亜'; // 全角文字
System.out.println("文字=" + ch + " code=" + (int)ch);
bdt = true;
System.out.println("bdt = " + bdt);
idt = 1234567890;
System.out.println("idt = " + idt);
ldt = 1234567890123456789L; // Lはlong値を示す
System.out.println("ldt = " + ldt);
fdt = 123.456F; // Fはfloat値を示す
System.out.println("fdt = " + fdt);
ddt = 123.456789012345;
System.out.println("ddt = " + ddt);
idt = 022; // 8進数の22
System.out.println("8進22 = " + idt);
idt = 0x22; // 16進数の22
System.out.println("16進22 = " + idt);
ddt = 5.67e4; // 指数表現の56700
System.out.println("指数 = " + ddt);
ch = '\n'; // エスケープ文字
System.out.println("改行文字コード = " + (int)ch);
ss = "AAAA\tBBBB"; // 文字列定数(エスケープ文字を含む)
System.out.println("ss = " + ss);
System.out.println("CNST1 = " + CNST1);
}
}
- 実行結果
文字=A code=65 <= 半角文字
文字=亜 code=20124 <= 全角文字
bdt = true <= 論理定数
idt = 1234567890 <= int型
ldt = 1234567890123456789 <= Lを付与したlong値定数
fdt = 123.456 <= Fを付与したfloat値定数
ddt = 123.456789012345 <= double型
8進22 = 18 <= 8進数の22
16進22 = 34 <= 16進数の22
指数 = 56700.0 <= 5.67e4
改行文字コード = 10 <= エスケープ文字\n
ss = AAAA BBBB <= \t(タブ)を含む文字列
CNST1 = 1234 <= final定数
- 考察
- データ型の変換:キャスト演算子
代入するとき、左辺と右辺の型が違う場合、左辺の型が右辺の型より大きいなら
右辺の型は左辺の型に変換されるが、 左辺の型が右辺の型より小さい場合、コンパイ
ルエラー「精度が落ちている可能性」が出る。 これを解決するには、キャスト演算子
を用いる。
(データ型)変数名
例
- float a = 3.14142f
int i = (int)f;
変数iには、変数fの少数部分を切り捨てた3が代入される。
- final定数
finalを使うと、変数を定数にすることができる。宣言は、finalのあとに普通に変数の宣言
をすればいいだけ。 この定数は、初期化はできるが、新しく値を代入することはできない。
(値を入れられるのは、初期化のときの1回のみ)
- 感想
むずかった。